package com.deco.logic.product;

import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Component;

import com.deco.dao.delegate.product.IDicVehicleDao;
import com.deco.dao.delegate.product.IPartGroupDao;
import com.deco.dao.delegate.product.IPartsCategoryDao;
import com.deco.domain.vo.product.DicVehicleVo;
import com.deco.domain.vo.product.PartGroupVo;
import com.deco.domain.vo.product.PartsCategoryVo;
import com.free.common.vo.PageResponseVo;
import com.free.common.vo.PageSearchVo;

/**
 * <p>
 * 功能概述:
 * </p>
 * <p>
 * 功能详述:
 * </p>
 */
@Component
public class PartsCategoryLogic {
    /*========================================================================*
     *                         Public Fields (公共属性)
     *========================================================================*/

    /*========================================================================*
     *                         Private Fields (私有属性)
     *========================================================================*/
    
    @Autowired
    IPartsCategoryDao partsCategoryDao;

    /*========================================================================*
     *                         Construct Methods (构造方法)
     *========================================================================*/

    /*========================================================================*
     *                         Public Methods (公有方法)
     *========================================================================*/

	public PartsCategoryVo getPartsCategoryVo(int id) {
		PartsCategoryVo partsCategoryVo = new PartsCategoryVo();
		partsCategoryVo.setId(id);
		return partsCategoryDao.selectOne(partsCategoryVo);
	}

	@CacheEvict(value = "categoryCache",allEntries = true)
	public void create(PartsCategoryVo partsCategoryVo) {
		partsCategoryDao.add(partsCategoryVo);
		
	}

	@CacheEvict(value = "categoryCache",allEntries = true)
	public void update(PartsCategoryVo partsCategoryVo) {
		partsCategoryDao.update(partsCategoryVo);
		
	}

	@CacheEvict(value = "categoryCache",allEntries = true)
	public void delete(int id) {
		partsCategoryDao.delete(id);
	}
	
	public List<PartsCategoryVo> getAll() {
		PartsCategoryVo cond = new PartsCategoryVo();
		return partsCategoryDao.selectList(cond , "");
	}

	public PageResponseVo<PartsCategoryVo> getPageInfo(
			PageSearchVo<PartsCategoryVo> condition) {
		return partsCategoryDao.selectByPageNoNameLike(condition.getConditionVo(), " sort asc,id desc ", condition.getCurrentNo(), condition.getLength());
	}

	@CacheEvict(value = "categoryCache",allEntries = true)
	public int batchDelete(Integer[] ids) {
		return partsCategoryDao.batchDelete(ids);
	}


	public List<PartsCategoryVo> getList(PartsCategoryVo condtion, String orderBy){
		return partsCategoryDao.selectList(condtion,orderBy);
	}

	@Cacheable(value = "categoryCache", key="allCategory")
	public List<PartsCategoryVo> selectAllEnableCategorys(){
		PartsCategoryVo condtion = new PartsCategoryVo();
		condtion.setStatus(1);
		return partsCategoryDao.selectList(condtion, " sort asc,id desc ");
	}

	@Cacheable(value = "categoryCache",key="#vo")
	public List<PartsCategoryVo> selectPartsCategoryForFront(PartsCategoryVo vo){
		return partsCategoryDao.selectCategoryList(vo);
	}

    /*========================================================================*
     *                         Private Methods (私有方法)
     *========================================================================*/
}
